<!--{
        "Title": "Go 1.15 Release Notes",
        "Path":  "/doc/go1.15"
}-->

<!--
NOTE: In this document and others in this directory, the convention is to
set fixed-width phrases with non-fixed-width spaces, as in
<code>hello</code> <code>world</code>.
Do not send CLs removing the interior tags from such phrases.
-->

<style>
  main ul li { margin: 0.5em 0; }
</style>

<h2 id="introduction">DRAFT RELEASE NOTES — Introduction to Go 1.15</h2>

<p>
  <strong>
    Go 1.15 is not yet released. These are work-in-progress
    release notes. Go 1.15 is expected to be released in August 2020.
  </strong>
</p>

<h2 id="language">Changes to the language</h2>

<p>
TODO
</p>

<h2 id="ports">Ports</h2>

<p>
TODO
</p>

<h2 id="tools">Tools</h2>

<p>
TODO
</p>

<h3 id="go-command">Go command</h3>

<p>
TODO
</p>

<h4 id="go-test"><code>go</code> <code>test</code></h4>

<p><!-- https://golang.org/issue/36134 -->
  Changing the <code>-timeout</code> flag now invalidates cached test results. A
  cached result for a test run with a long timeout will no longer count as
  passing when <code>go</code> <code>test</code> is re-invoked with a short one.
</p>

<h4 id="go-flag-parsing">Flag parsing</h4>

<p><!-- https://golang.org/cl/211358 -->
  Various flag parsing issues in <code>go</code> <code>test</code> and
  <code>go</code> <code>vet</code> have been fixed. Notably, flags specified
  in <code>GOFLAGS</code> are handled more consistently, and
  the <code>-outputdir</code> flag now interprets relative paths relative to the
  working directory of the <code>go</code> command (rather than the working
  directory of each individual test).
</p>

<h2 id="runtime">Runtime</h2>

<p>
TODO
</p>


<h2 id="library">Core library</h2>

<p>
TODO
</p>

<dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
  <dd>
    <p><!-- golang.org/issue/28135 -->
      The <code>testing.T</code> type now has a <code>Deadline</code> method
      that reports the time at which the test binary will have exceeded its
      timeout.
    </p>
</dl><!-- testing -->

<h3 id="minor_library_changes">Minor changes to the library</h3>

<p>
  As always, there are various minor changes and updates to the library,
  made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
  in mind.
</p>

<p>
TODO
</p>

<dl id="pkg-runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
  <dd>
    <p><!-- CL 221779 -->
      If <code>panic</code> is invoked with a value whose type is derived from any
      of: <code>bool</code>, <code>complex64</code>, <code>complex128</code>, <code>float32</code>, <code>float64</code>,
      <code>int</code>, <code>int8</code>, <code>int16</code>, <code>int32</code>, <code>int64</code>, <code>string</code>,
      <code>uint</code>, <code>uint8</code>, <code>uint16</code>, <code>uint32</code>, <code>uint64</code>, <code>uintptr</code>,
      then the value will be printed, instead of just its address.
    </p>
  </dd>
</dl>

<dl id="sync"><dt><a href="/pkg/sync/">sync</a></dt>
  <dd>
    <p><!-- golang.org/issue/33762 -->
      The new method
      <a href="/pkg/sync#Map.LoadAndDelete"><code>Map.LoadAndDelete</code></a>
      atomically deletes a key and returns the previous value if present.
    </p>
    <p><!-- CL 205899 -->
      The method
      <a href="/pkg/sync#Map.Delete"><code>Map.Delete</code></a>
      is more efficient.
    </p>
</dl><!-- sync -->

<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
  <dd>
    <p><!-- golang.org/issue/33184 -->
       The new method
       <a href="/pkg/time#Ticker.Reset"><code>Ticker.Reset</code></a>
       supports changing the duration of a ticker.
    </p>
  </dd>
</dl><!-- time -->
